package com.lanou.bookstore.cart.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class Cart implements Serializable{
    public Map<String, CartItem> getMap() {
        return map;
    }

    public Cart setMap(Map<String, CartItem> map) {
        this.map = map;
        return this;
    }

    private Map<String, CartItem> map = new LinkedHashMap<>();



    public void add(CartItem cartItem) {
        if (map.containsKey(cartItem.getBook().getBid())) {   // 判断原来车中是否存在该条目
            CartItem cartItem1 = map.get(cartItem.getBook().getBid());  // 返回原条目
            cartItem1.setCount(cartItem1.getCount() + cartItem.getCount()); // 设置老条目数量为,自己数量+新条目
            map.put(cartItem.getBook().getBid(), cartItem1);
        } else {
            map.put(cartItem.getBook().getBid(), cartItem);
        }


    }

    public double getTotal() {
        BigDecimal total = new BigDecimal("0");
        for (CartItem cartItem :map.values()) {
            BigDecimal subTotal = new BigDecimal("" + cartItem.getSubtotal());
            total = total.add(subTotal);
        }

        return total.doubleValue();
    }

    // 清空所有条目
    public void clear() {
        map.clear();
    }


    //  删除指定条目
    public void delete(String bid) {
        map.remove(bid);
    }


    public Collection<CartItem> getCartItems() {
        return map.values();
    }

}
